package org.custom.spring.boot.security.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import org.custom.spring.boot.security.entity.Login;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 用户认证相关服务接口
 *
 * @author LiKun
 * @date 2021/11/10 16:39
 */
public interface ApproveService extends Serializable {
    /**
     * 认证/解析 Token 令牌，并认证用户信息
     *
     * @param token 令牌
     *
     * @throws JsonProcessingException JSON解析异常
     */
    void authenticate(@NotBlank(message = "Token令牌不能为空") String token) throws JsonProcessingException;

    /**
     * 系统用户登录方法
     *
     * @param login 登陆数据
     * @param iP    请求IP地址
     *
     * @return Token令牌
     *
     * @throws JsonProcessingException JSON解析异常
     */
    String login(@NotNull(message = "登陆数据不能为空") Login login, @NotBlank(message = "IP地址不能为空") String iP) throws JsonProcessingException;
}
